<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="de">
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 <meta name="Page-topic" content="LDchg()" />
 <meta name="Description" content="ST-Open Libraries: LDchg()" />
 <meta name="Keywords" content="ST-Open Software, Open Source, ST-Open, Software, Bibliothek, Bibliotheken, freie Software, Assembler, C" />
 <meta name="date" content="2009-05-08T00:00:00+00:00" />
 <meta name="robots" content="index,follow" />
 <meta name="revisit-after" content="14 days" />
 <meta name="generator" content="Bernhard Schornak, handwritten" />
 <style type="text/css"><!--@import "../../st.css";--></style>
 <link rel="SHORTCUT ICON" href="../../../../pics/favicon.ico" />
 <title>LDchg()</title>
</head>
<body id="top">
<div class="pagehd">
<div id="menu">
<ul>
 <li><a href="../../../indexe.htm">Software</a></li>
 <li><a href="../tut/index.htm">Tutorials</a></li>
 <li><a href="../index.htm">Documentation</a></li>
 <li><a href="../alp.htm">alphabetical</a></li>
 <li><a href="../fct.htm">by Function</a></li>
</ul>
</div>
<div class="update">[2009-05-08]</div><div class="headpc"><img src="../../pics/ste.png" alt="SourceDoc Logo" width="75" height="75" border="0" /></div>
</div>
<div class="crlf1"></div>
&#160;&#160;&#160;<a href="../index.htm"><img src="../../../../pics/nav_up.png" alt="up" width="20" height="20" border="0" title="up" /></a>
&#160;&#160;&#160;<a href="ldr01.htm"><img src="../../../../pics/nav_bk.png" alt="previous" width="20" height="20" border="0" title="previous" /></a>
&#160;&#160;&#160;<a href="ldr03.htm"><img src="../../../../pics/nav_fw.png" alt="next" width="20" height="20" border="0" title="next" /></a>
<div class="text100"><div class="inner">..\st7\lib\sources\core\ldr.S</div><div class="outer"><big>sys.lib</big></div></div>
<div class="crlf1"></div>
<div class="text100"><div class="inner"><b>LDchg</b></div><div class="outer">Function</div></div><div class="crlf0"></div>
<div class="text100"><div class="inner">rc = LDchg(MemHandle, NewSize);</div><div class="outer">Call</div></div><div class="crlf0"></div>
<div class="text100"><div class="inner">
<div class="inners">DD</div>
<div class="inners">MemHandle</div>
<div class="innerl">memory handle</div>
<div class="crlf0"></div>
<div class="inners">DD</div>
<div class="inners">NewSize</div>
<div class="innerl">new size</div>
</div><div class="outer">Input</div></div><div class="crlf0"></div>
<div class="text100"><div class="inner">
<div class="inners">DD</div>
<div class="inners">rc</div>
<div class="innerl">00000000 - ERR_NO_ERROR<div class="crlf0"></div>00000004 - ERR_LDR_BUSY<div class="crlf0"></div>
00000013 - ERR_LDR_MH<div class="crlf0"></div>0000**** - error DosAllocMem()</div>
</div><div class="outer">Output</div></div><div class="crlf0"></div>
<div class="text100"><div class="inner">
LDchg() is used to shrink or enlarge the memory block specified by the passed [MemHandle]. A new memory
 block is allocated, then the content of the old memory block is copied to the new one. Finally, the old
 block is freed. If the new size is smaller than the old size, only the bytes fitting into the new block
 are copied - all superfluous bytes are lost! Data fields are managed by the database engine. Please do
 not resize data fields - there's no reason to do that!
<div class="crlf1"></div>
<b>Caution:</b> While the memory handle LD.MMoff always stays the same until you call LDfre(), the address
 LD.MemEA is invalid after resizing. You have to update it via LDupd(), if the LD structure still exists.
 If not, the example shows how to retrieve it.
<div class="crlf1"></div>
<b>Caution:</b> Resizing failed if RC is not zero. In this case, the old block was not touched - it still
 exists with its old size!
</div><div class="outer">Description</div></div><div class="crlf0"></div>
<div class="text100"><div class="inner">
<pre>
VOID * MyFunction(DD mh)
{
 VOID *p;
 DD    rc;
 rc = LDchg(mh, 0x3000);
 p  = Prd((VOID *)mh, 0);
 return(p);
}
</pre>
The memory block [mh] is resized via LDchg(). Because the new memory block is stored at a different address
 now, we read the doubleword at 00[mh] (see <a href="../tut/0200.htm">Loader Table</a>) to get its new address.
</div><div class="outer">Example</div></div><div class="crlf0"></div>
<div class="crlf2"></div>
&#160;&#160;&#160;<a href="../index.htm"><img src="../../../../pics/nav_up.png" alt="up" width="20" height="20" border="0" title="up" /></a>
&#160;&#160;&#160;<a href="ldr01.htm"><img src="../../../../pics/nav_bk.png" alt="previous" width="20" height="20" border="0" title="previous" /></a>
&#160;&#160;&#160;<a href="ldr03.htm"><img src="../../../../pics/nav_fw.png" alt="next" width="20" height="20" border="0" title="next" /></a>
<div class="crlf1"></div>
&#160;&#160;&#160;<a href="http://validator.w3.org/check?uri=http%3A%2F%2Fst-open.com%2Fst-open%2Fdoc%2Fe%2Fsys%2Fldr02.htm">
<img src="../../../../pics/xhtml.png" alt="validHTML" width="100" height="35" border="0" title="validate XHTML" /></a>
<div class="crlf1"></div>
</body>
</html>
